Code Coverage |
||||||||||||||||
Lines |
Branches |
Paths |
Functions and Methods |
Classes and Traits |
||||||||||||
| Total | |
69.65% |
140 / 201 |
|
54.62% |
71 / 130 |
|
9.13% |
19 / 208 |
|
26.32% |
5 / 19 |
CRAP | |
0.00% |
0 / 1 |
| FilterDAO | |
70.35% |
140 / 199 |
|
54.62% |
71 / 130 |
|
9.13% |
19 / 208 |
|
52.63% |
10 / 19 |
3136.95 | |
0.00% |
0 / 1 |
| configureObject | |
57.69% |
15 / 26 |
|
48.00% |
12 / 25 |
|
1.25% |
1 / 80 |
|
0.00% |
0 / 1 |
150.67 | |||
| insertObject | |
100.00% |
22 / 22 |
|
75.00% |
3 / 4 |
|
50.00% |
1 / 2 |
|
100.00% |
1 / 1 |
2.50 | |||
| getObject | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| getObjectById | |
100.00% |
8 / 8 |
|
85.71% |
6 / 7 |
|
50.00% |
2 / 4 |
|
100.00% |
1 / 1 |
4.12 | |||
| getObjectsByClass | |
100.00% |
7 / 7 |
|
71.43% |
5 / 7 |
|
25.00% |
1 / 4 |
|
100.00% |
1 / 1 |
6.80 | |||
| getObjectsByGroupAndClass | |
100.00% |
9 / 9 |
|
71.43% |
5 / 7 |
|
25.00% |
1 / 4 |
|
100.00% |
1 / 1 |
6.80 | |||
| getObjectsByTypeDescription | |
0.00% |
0 / 28 |
|
0.00% |
0 / 21 |
|
0.00% |
0 / 58 |
|
0.00% |
0 / 1 |
90 | |||
| getObjectsByGroup | |
100.00% |
14 / 14 |
|
85.71% |
12 / 14 |
|
4.17% |
1 / 24 |
|
100.00% |
1 / 1 |
37.68 | |||
| updateObject | |
90.91% |
20 / 22 |
|
66.67% |
4 / 6 |
|
25.00% |
1 / 4 |
|
0.00% |
0 / 1 |
6.80 | |||
| deleteObject | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| deleteObjectById | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| updateDataObjectSettings | |
85.71% |
6 / 7 |
|
83.33% |
5 / 6 |
|
25.00% |
1 / 4 |
|
0.00% |
0 / 1 |
6.80 | |||
| getAdditionalFieldNames | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| getLocaleFieldNames | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| _newDataObject | |
72.73% |
8 / 11 |
|
66.67% |
6 / 9 |
|
14.29% |
1 / 7 |
|
0.00% |
0 / 1 |
20.74 | |||
| _fromRow | |
93.33% |
14 / 15 |
|
66.67% |
2 / 3 |
|
50.00% |
1 / 2 |
|
0.00% |
0 / 1 |
2.50 | |||
| _populateSubFilters | |
22.22% |
2 / 9 |
|
33.33% |
2 / 6 |
|
33.33% |
1 / 3 |
|
0.00% |
0 / 1 |
5.67 | |||
| _insertSubFilters | |
40.00% |
2 / 5 |
|
33.33% |
2 / 6 |
|
25.00% |
1 / 4 |
|
0.00% |
0 / 1 |
6.80 | |||
| _deleteSubFiltersByParentFilterId | |
62.50% |
5 / 8 |
|
50.00% |
2 / 4 |
|
33.33% |
1 / 3 |
|
0.00% |
0 / 1 |
3.19 | |||
| 1 | <?php |
| 2 | |
| 3 | /** |
| 4 | * @file classes/filter/FilterDAO.php |
| 5 | * |
| 6 | * Copyright (c) 2014-2021 Simon Fraser University |
| 7 | * Copyright (c) 2000-2021 John Willinsky |
| 8 | * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. |
| 9 | * |
| 10 | * @class FilterDAO |
| 11 | * |
| 12 | * @ingroup filter |
| 13 | * |
| 14 | * @see PersistableFilter |
| 15 | * |
| 16 | * @brief Operations for retrieving and modifying Filter objects. |
| 17 | * |
| 18 | * The filter DAO acts as a filter registry. It allows filter providers to |
| 19 | * register transformations and filter consumers to identify available |
| 20 | * transformations that convert a given input type into a required output type. |
| 21 | * |
| 22 | * Transformations are defined as a combination of a filter class, a pair of |
| 23 | * input/output type specifications supported by that filter implementation |
| 24 | * and a set of configuration parameters that customize the filter. |
| 25 | * |
| 26 | * Transformations can be based on filter templates. A template is defined as |
| 27 | * a filter instance without parameterization. A flag is used to distinguish |
| 28 | * filter templates from fully parameterized filter instances. |
| 29 | * |
| 30 | * Different filters that perform semantically related transformations (e.g. |
| 31 | * all citation parsers or all citation output filters) are clustered into |
| 32 | * filter groups (@see FilterGroup). |
| 33 | * |
| 34 | * The following additional conditions apply: |
| 35 | * 1) A single filter class may support several transformations, i.e. distinct |
| 36 | * combinations of input and output types or distinct parameterizations. |
| 37 | * Therefore the filter DAO must be able to handle several registry entries |
| 38 | * per filter class. |
| 39 | * 2) The DAO must take care to only select such transformations that are |
| 40 | * supported by the current runtime environment. |
| 41 | * 3) The DAO implementation must be scalable, fast and memory efficient. |
| 42 | */ |
| 43 | |
| 44 | namespace PKP\filter; |
| 45 | |
| 46 | use APP\core\Application; |
| 47 | use Exception; |
| 48 | use PKP\core\DataObject; |
| 49 | use PKP\db\DAORegistry; |
| 50 | use PKP\db\DAOResultFactory; |
| 51 | |
| 52 | class FilterDAO extends \PKP\db\DAO |
| 53 | { |
| 54 | /** @var array names of additional settings for the currently persisted/retrieved filter */ |
| 55 | public $additionalFieldNames; |
| 56 | |
| 57 | /** @var array names of localized settings for the currently persisted/retrieved filter */ |
| 58 | public $localeFieldNames; |
| 59 | |
| 60 | |
| 61 | /** |
| 62 | * Instantiates a new filter from configuration data and then |
| 63 | * installs it. |
| 64 | * |
| 65 | * @param array $settings key-value pairs that can be directly written |
| 66 | * via \PKP\core\DataObject::setData(). |
| 67 | * @param int $contextId the context the filter should be installed into |
| 68 | * @param array $subFilters sub-filters (only allowed when the filter is a CompositeFilter) |
| 69 | * @param bool $persist whether to actually persist the filter |
| 70 | * |
| 71 | * @return PersistableFilter|boolean the new filter if installation successful, otherwise 'false'. |
| 72 | */ |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 86 | return false; |
| 87 | } |
| 88 | |
| 89 | // Instantiate the filter. |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 95 | } else { |
| 96 | // Could not find class |
| 97 | return false; |
| 98 | } |
| 99 | if (!$filter) { |
| 100 | return false; |
| 101 | } |
| 102 | |
| 103 | // Is this a template? |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 109 | throw new Exception('Filter is not expected type CompositeFilter!'); |
| 110 | } |
| 111 | if (!is_array($subFilters)) { |
| 112 | throw new Exception('Subfilters must be an array!'); |
| 113 | } |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 130 | } |
| 131 | } |
| 132 | |
| 133 | return $filter; |
| 134 | } |
| 135 | |
| 136 | /** |
| 137 | * Insert a new filter instance (transformation). |
| 138 | * |
| 139 | * @param $filter The configured filter instance to be persisted |
| 140 | * |
| 141 | * @return The new filter id |
| 142 | */ |
| 143 | public function insertObject(PersistableFilter $filter, ?int $contextId = Application::SITE_CONTEXT_ID): int |
| 144 | { |
| 145 | $filterGroup = $filter->getFilterGroup(); |
| 146 | assert($filterGroup->getSymbolic() != FILTER_GROUP_TEMPORARY_ONLY); |
| 147 | |
| 148 | $this->update( |
| 149 | sprintf('INSERT INTO filters |
| 150 | (filter_group_id, context_id, display_name, class_name, is_template, parent_filter_id, seq) |
| 151 | VALUES (?, ?, ?, ?, ?, ?, ?)'), |
| 152 | [ |
| 153 | $filterGroup->getId(), |
| 154 | $contextId, |
| 155 | $filter->getDisplayName(), |
| 156 | $filter->getClassName(), |
| 157 | $filter->getIsTemplate() ? 1 : 0, |
| 158 | $filter->getParentFilterId(), |
| 159 | (int) $filter->getSequence() |
| 160 | ] |
| 161 | ); |
| 162 | $filter->setId((int)$this->getInsertId()); |
| 163 | $this->updateDataObjectSettings( |
| 164 | 'filter_settings', |
| 165 | $filter, |
| 166 | ['filter_id' => $filter->getId()] |
| 167 | ); |
| 168 | |
| 169 | // Recursively insert sub-filters. |
| 170 | $this->_insertSubFilters($filter); |
| 171 | |
| 172 | return $filter->getId(); |
| 173 | } |
| 174 | |
| 175 | /** |
| 176 | * Retrieve a configured filter instance (transformation) |
| 177 | */ |
| 178 | public function getObject(PersistableFilter $filter): PersistableFilter |
| 179 | { |
| 180 | return $this->getObjectById($filter->getId()); |
| 181 | } |
| 182 | |
| 183 | /** |
| 184 | * Retrieve a configured filter instance (transformation) by id. |
| 185 | */ |
| 186 | public function getObjectById(int $filterId, bool $allowSubfilter = false): ?PersistableFilter |
| 187 | { |
| 188 | $result = $this->retrieve( |
| 189 | 'SELECT * FROM filters |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 191 | filter_id = ?', |
| 192 | [(int) $filterId] |
| 193 | ); |
| 194 | $row = $result->current(); |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 196 | } |
| 197 | |
| 198 | /** |
| 199 | * Retrieve a result set with all filter instances |
| 200 | * (transformations) that are based on the given class. |
| 201 | * |
| 202 | * @param bool $getTemplates set true if you want filter templates |
| 203 | * rather than actual transformations |
| 204 | * |
| 205 | * @return DAOResultFactory<PersistableFilter> |
| 206 | */ |
| 207 | public function getObjectsByClass( |
| 208 | string $className, |
| 209 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 210 | bool $getTemplates = false, |
| 211 | bool $allowSubfilters = false |
| 212 | ): DAOResultFactory { |
| 213 | $result = $this->retrieve( |
| 214 | 'SELECT * FROM filters |
| 215 | WHERE COALESCE(context_id, 0) = ? AND |
| 216 | LOWER(class_name) = LOWER(?) AND |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 219 | [(int) $contextId, $className] |
| 220 | ); |
| 221 | |
| 222 | return new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 223 | } |
| 224 | |
| 225 | /** |
| 226 | * Retrieve a result set with all filter instances |
| 227 | * (transformations) within a given group that are |
| 228 | * based on the given class. |
| 229 | * |
| 230 | * @param bool $getTemplates set true if you want filter templates |
| 231 | * rather than actual transformations |
| 232 | * |
| 233 | * @return DAOResultFactory<PersistableFilter> |
| 234 | */ |
| 235 | public function getObjectsByGroupAndClass( |
| 236 | string $groupSymbolic, |
| 237 | string $className, |
| 238 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 239 | bool $getTemplates = false, |
| 240 | bool $allowSubfilters = false |
| 241 | ): DAOResultFactory { |
| 242 | $result = $this->retrieve( |
| 243 | 'SELECT f.* FROM filters f' . |
| 244 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 245 | ' WHERE fg.symbolic = ? AND COALESCE(f.context_id, 0) = ? AND LOWER(f.class_name) = LOWER(?)' . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 248 | [$groupSymbolic, (int) $contextId, $className] |
| 249 | ); |
| 250 | |
| 251 | return new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 252 | } |
| 253 | |
| 254 | /** |
| 255 | * Retrieve filters based on the supported input/output type. |
| 256 | * |
| 257 | * @param string $inputTypeDescription a type description that has to match the input type |
| 258 | * @param string $outputTypeDescription a type description that has to match the output type |
| 259 | * NB: input and output type description can contain wildcards. |
| 260 | * @param mixed $data the data to be matched by the filter. If no data is given then |
| 261 | * all filters will be matched. |
| 262 | * @param bool $dataIsInput true if the given data object is to be checked as |
| 263 | * input type, false to check against the output type. |
| 264 | * |
| 265 | * @return PersistableFilter[] a list of matched filters. |
| 266 | */ |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 282 | // Get all adapter filters. |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 301 | return $filterCache[$filterCacheKey]; |
| 302 | } |
| 303 | |
| 304 | // Build the object-specific adapter cache. |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 325 | |
| 326 | /** |
| 327 | * Retrieve filter instances configured for a given context |
| 328 | * that belong to a given filter group. |
| 329 | * |
| 330 | * Only filters supported by the current run-time environment |
| 331 | * will be returned when $checkRuntimeEnvironment is set to 'true'. |
| 332 | * |
| 333 | * @param $contextId returns filters from the site context and |
| 334 | * the given filters of all contexts if set to null |
| 335 | * @param $getTemplates set true if you want filter templates |
| 336 | * rather than actual transformations |
| 337 | * @param $checkRuntimeEnvironment whether to remove filters |
| 338 | * from the result set that do not match the current run-time environment. |
| 339 | * |
| 340 | * @return filter instances (transformations) in the given group |
| 341 | */ |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 372 | |
| 373 | /** |
| 374 | * Update an existing filter instance (transformation). |
| 375 | */ |
| 376 | public function updateObject(PersistableFilter $filter): void |
| 377 | { |
| 378 | $filterGroup = $filter->getFilterGroup(); |
| 379 | assert($filterGroup->getSymbolic() != FILTER_GROUP_TEMPORARY_ONLY); |
| 380 | |
| 381 | $this->update( |
| 382 | 'UPDATE filters |
| 383 | SET filter_group_id = ?, |
| 384 | display_name = ?, |
| 385 | class_name = ?, |
| 386 | is_template = ?, |
| 387 | parent_filter_id = ?, |
| 388 | seq = ? |
| 389 | WHERE filter_id = ?', |
| 390 | [ |
| 391 | (int) $filterGroup->getId(), |
| 392 | $filter->getDisplayName(), |
| 393 | $filter->getClassName(), |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 395 | $filter->getParentFilterId(), |
| 396 | (int) $filter->getSequence(), |
| 397 | (int) $filter->getId() |
| 398 | ] |
| 399 | ); |
| 400 | $this->updateDataObjectSettings( |
| 401 | 'filter_settings', |
| 402 | $filter, |
| 403 | ['filter_id' => $filter->getId()] |
| 404 | ); |
| 405 | |
| 406 | // Do we update a composite filter? |
| 407 | if ($filter instanceof \PKP\filter\CompositeFilter) { |
| 408 | // Delete all sub-filters |
| 409 | $this->_deleteSubFiltersByParentFilterId($filter->getId()); |
| 410 | |
| 411 | // Re-insert sub-filters |
| 412 | $this->_insertSubFilters($filter); |
| 413 | } |
| 414 | } |
| 415 | |
| 416 | /** |
| 417 | * Delete a filter instance (transformation). |
| 418 | */ |
| 419 | public function deleteObject(PersistableFilter $filter): bool |
| 420 | { |
| 421 | return $this->deleteObjectById($filter->getId()); |
| 422 | } |
| 423 | |
| 424 | /** |
| 425 | * Delete a filter instance (transformation) by id. |
| 426 | */ |
| 427 | public function deleteObjectById(int $filterId): bool |
| 428 | { |
| 429 | $this->update('DELETE FROM filters WHERE filter_id = ?', [$filterId]); |
| 430 | $this->update('DELETE FROM filter_settings WHERE filter_id = ?', [$filterId]); |
| 431 | $this->_deleteSubFiltersByParentFilterId($filterId); |
| 432 | return true; |
| 433 | } |
| 434 | |
| 435 | |
| 436 | // |
| 437 | // Overridden methods from DAO |
| 438 | // |
| 439 | /** |
| 440 | * @see DAO::updateDataObjectSettings() |
| 441 | */ |
| 442 | public function updateDataObjectSettings(string $tableName, DataObject $dataObject, array $idArray): void |
| 443 | { |
| 444 | // Make sure that the update function finds the filter settings |
| 445 | $this->additionalFieldNames = $dataObject->getSettingNames(); |
| 446 | $this->localeFieldNames = $dataObject->getLocalizedSettingNames(); |
| 447 | |
| 448 | // Add runtime settings |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 450 | if ($dataObject->hasData($runtimeSetting)) { |
| 451 | $this->additionalFieldNames[] = $runtimeSetting; |
| 452 | } |
| 453 | } |
| 454 | |
| 455 | // Update the filter settings |
| 456 | parent::updateDataObjectSettings($tableName, $dataObject, $idArray); |
| 457 | |
| 458 | // Reset the internal fields |
| 459 | unset($this->additionalFieldNames, $this->localeFieldNames); |
| 460 | } |
| 461 | |
| 462 | |
| 463 | // |
| 464 | // Implement template methods from DAO |
| 465 | // |
| 466 | /** |
| 467 | * @see DAO::getAdditionalFieldNames() |
| 468 | */ |
| 469 | public function getAdditionalFieldNames(): array |
| 470 | { |
| 471 | return $this->additionalFieldNames; |
| 472 | } |
| 473 | |
| 474 | /** |
| 475 | * @see DAO::getLocaleFieldNames() |
| 476 | */ |
| 477 | public function getLocaleFieldNames(): array |
| 478 | { |
| 479 | return $this->localeFieldNames; |
| 480 | } |
| 481 | |
| 482 | |
| 483 | // |
| 484 | // Private helper methods |
| 485 | // |
| 486 | /** |
| 487 | * Construct a new configured filter instance (transformation). |
| 488 | * |
| 489 | * @param string $filterClassName a fully qualified class name |
| 490 | * |
| 491 | */ |
| 492 | public function _newDataObject(string $filterClassName, int $filterGroupId): PersistableFilter |
| 493 | { |
| 494 | // Instantiate the filter group. |
| 495 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 496 | $filterGroup = $filterGroupDao->getObjectById($filterGroupId); |
| 497 | if (!$filterGroup) { |
| 498 | throw new Exception('Could not get filter group by ID!'); |
| 499 | } |
| 500 | |
| 501 | // Instantiate the filter |
| 502 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 503 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 504 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 505 | } elseif (class_exists($filterClassName)) { |
| 506 | $filter = new $filterClassName($filterGroup); |
| 507 | } |
| 508 | if (!is_object($filter)) { |
| 509 | throw new Exception('Error while instantiating class "' . $filterClassName . '" as filter!'); |
| 510 | } |
| 511 | |
| 512 | return $filter; |
| 513 | } |
| 514 | |
| 515 | /** |
| 516 | * Internal function to return a filter instance (transformation) |
| 517 | * object from a row. |
| 518 | */ |
| 519 | public function _fromRow(array $row): PersistableFilter |
| 520 | { |
| 521 | static $lockedFilters = []; |
| 522 | $filterId = $row['filter_id']; |
| 523 | |
| 524 | // Check the filter lock (to detect loops). |
| 525 | // NB: This is very important otherwise the request |
| 526 | // could eat up lots of memory if the PHP memory max was |
| 527 | // set too high. |
| 528 | if (isset($lockedFilters[$filterId])) { |
| 529 | throw new Exception('Detected a loop in the definition of the filter with id ' . $filterId . '!'); |
| 530 | } |
| 531 | |
| 532 | // Lock the filter id. |
| 533 | $lockedFilters[$filterId] = true; |
| 534 | |
| 535 | // Instantiate the filter. |
| 536 | $filter = $this->_newDataObject($row['class_name'], (int)$row['filter_group_id']); |
| 537 | |
| 538 | // Configure the filter instance |
| 539 | $filter->setId((int)$row['filter_id']); |
| 540 | $filter->setDisplayName($row['display_name']); |
| 541 | $filter->setIsTemplate((bool)$row['is_template']); |
| 542 | $filter->setParentFilterId($row['parent_filter_id']); |
| 543 | $filter->setSequence((int)$row['seq']); |
| 544 | $this->getDataObjectSettings('filter_settings', 'filter_id', $row['filter_id'], $filter); |
| 545 | |
| 546 | // Recursively retrieve sub-filters of this filter. |
| 547 | $this->_populateSubFilters($filter); |
| 548 | |
| 549 | // Release the lock on the filter id. |
| 550 | unset($lockedFilters[$filterId]); |
| 551 | |
| 552 | return $filter; |
| 553 | } |
| 554 | |
| 555 | /** |
| 556 | * Populate the sub-filters (if any) for the |
| 557 | * given parent filter. |
| 558 | */ |
| 559 | public function _populateSubFilters(PersistableFilter $parentFilter): void |
| 560 | { |
| 561 | if (!$parentFilter instanceof \PKP\filter\CompositeFilter) { |
| 562 | // Nothing to do. Only composite filters |
| 563 | // can have sub-filters. |
| 564 | return; |
| 565 | } |
| 566 | |
| 567 | // Retrieve the sub-filters from the database. |
| 568 | $result = $this->retrieve( |
| 569 | 'SELECT * FROM filters WHERE parent_filter_id = ? ORDER BY seq', |
| 570 | [$parentFilter->getId()] |
| 571 | ); |
| 572 | /** @var DAOResultFactory<PersistableFilter> */ |
| 573 | $daoResultFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 574 | |
| 575 | // Add sub-filters. |
| 576 | while ($subFilter = $daoResultFactory->next()) { |
| 577 | // Add the sub-filter to the filter list |
| 578 | // of its parent filter. |
| 579 | $parentFilter->addFilter($subFilter); |
| 580 | } |
| 581 | } |
| 582 | |
| 583 | /** |
| 584 | * Recursively insert sub-filters of |
| 585 | * the given parent filter. |
| 586 | */ |
| 587 | public function _insertSubFilters(Filter $parentFilter): void |
| 588 | { |
| 589 | if (!$parentFilter instanceof \PKP\filter\CompositeFilter) { |
| 590 | // Nothing to do. Only composite filters |
| 591 | // can have sub-filters. |
| 592 | return; |
| 593 | } |
| 594 | |
| 595 | // Recursively insert sub-filters |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 597 | $subFilter->setParentFilterId($parentFilter->getId()); |
| 598 | $subfilterId = $this->insertObject($subFilter); |
| 599 | } |
| 600 | } |
| 601 | |
| 602 | /** |
| 603 | * Recursively delete all sub-filters for the given parent filter. |
| 604 | */ |
| 605 | public function _deleteSubFiltersByParentFilterId(int $parentFilterId): void |
| 606 | { |
| 607 | // Identify sub-filters. |
| 608 | $result = $this->retrieve( |
| 609 | 'SELECT * FROM filters WHERE parent_filter_id = ?', |
| 610 | [$parentFilterId] |
| 611 | ); |
| 612 | |
| 613 | foreach ($result as $row) { |
| 614 | // Delete sub-filters |
| 615 | // NB: We need to do this before we delete |
| 616 | // sub-sub-filters to avoid loops. |
| 617 | $subFilterId = $row->filter_id; |
| 618 | $this->deleteObjectById($subFilterId); |
| 619 | |
| 620 | // Recursively delete sub-sub-filters. |
| 621 | $this->_deleteSubFiltersByParentFilterId($subFilterId); |
| 622 | } |
| 623 | } |
| 624 | } |
| 625 | |
| 626 | if (!PKP_STRICT_MODE) { |
| 627 | class_alias('\PKP\filter\FilterDAO', '\FilterDAO'); |
| 628 | } |
Below are the source code lines that represent each code path as identified by Xdebug. Please note a path is not
necessarily coterminous with a line, a line may contain multiple paths and therefore show up more than once.
Please also be aware that some paths may include implicit rather than explicit branches, e.g. an if statement
always has an else as part of its logical flow even if you didn't write one.
| 605 | public function _deleteSubFiltersByParentFilterId(int $parentFilterId): void |
| 606 | { |
| 607 | // Identify sub-filters. |
| 608 | $result = $this->retrieve( |
| 609 | 'SELECT * FROM filters WHERE parent_filter_id = ?', |
| 610 | [$parentFilterId] |
| 611 | ); |
| 612 | |
| 613 | foreach ($result as $row) { |
| 613 | foreach ($result as $row) { |
| 613 | foreach ($result as $row) { |
| 614 | // Delete sub-filters |
| 615 | // NB: We need to do this before we delete |
| 616 | // sub-sub-filters to avoid loops. |
| 617 | $subFilterId = $row->filter_id; |
| 613 | foreach ($result as $row) { |
| 613 | foreach ($result as $row) { |
| 614 | // Delete sub-filters |
| 615 | // NB: We need to do this before we delete |
| 616 | // sub-sub-filters to avoid loops. |
| 617 | $subFilterId = $row->filter_id; |
| 618 | $this->deleteObjectById($subFilterId); |
| 619 | |
| 620 | // Recursively delete sub-sub-filters. |
| 621 | $this->_deleteSubFiltersByParentFilterId($subFilterId); |
| 622 | } |
| 623 | } |
| 605 | public function _deleteSubFiltersByParentFilterId(int $parentFilterId): void |
| 606 | { |
| 607 | // Identify sub-filters. |
| 608 | $result = $this->retrieve( |
| 609 | 'SELECT * FROM filters WHERE parent_filter_id = ?', |
| 610 | [$parentFilterId] |
| 611 | ); |
| 612 | |
| 613 | foreach ($result as $row) { |
| 613 | foreach ($result as $row) { |
| 613 | foreach ($result as $row) { |
| 614 | // Delete sub-filters |
| 615 | // NB: We need to do this before we delete |
| 616 | // sub-sub-filters to avoid loops. |
| 617 | $subFilterId = $row->filter_id; |
| 618 | $this->deleteObjectById($subFilterId); |
| 619 | |
| 620 | // Recursively delete sub-sub-filters. |
| 621 | $this->_deleteSubFiltersByParentFilterId($subFilterId); |
| 622 | } |
| 623 | } |
| 605 | public function _deleteSubFiltersByParentFilterId(int $parentFilterId): void |
| 606 | { |
| 607 | // Identify sub-filters. |
| 608 | $result = $this->retrieve( |
| 609 | 'SELECT * FROM filters WHERE parent_filter_id = ?', |
| 610 | [$parentFilterId] |
| 611 | ); |
| 612 | |
| 613 | foreach ($result as $row) { |
| 613 | foreach ($result as $row) { |
| 614 | // Delete sub-filters |
| 615 | // NB: We need to do this before we delete |
| 616 | // sub-sub-filters to avoid loops. |
| 617 | $subFilterId = $row->filter_id; |
| 618 | $this->deleteObjectById($subFilterId); |
| 619 | |
| 620 | // Recursively delete sub-sub-filters. |
| 621 | $this->_deleteSubFiltersByParentFilterId($subFilterId); |
| 622 | } |
| 623 | } |
| 519 | public function _fromRow(array $row): PersistableFilter |
| 520 | { |
| 521 | static $lockedFilters = []; |
| 522 | $filterId = $row['filter_id']; |
| 523 | |
| 524 | // Check the filter lock (to detect loops). |
| 525 | // NB: This is very important otherwise the request |
| 526 | // could eat up lots of memory if the PHP memory max was |
| 527 | // set too high. |
| 528 | if (isset($lockedFilters[$filterId])) { |
| 529 | throw new Exception('Detected a loop in the definition of the filter with id ' . $filterId . '!'); |
| 519 | public function _fromRow(array $row): PersistableFilter |
| 520 | { |
| 521 | static $lockedFilters = []; |
| 522 | $filterId = $row['filter_id']; |
| 523 | |
| 524 | // Check the filter lock (to detect loops). |
| 525 | // NB: This is very important otherwise the request |
| 526 | // could eat up lots of memory if the PHP memory max was |
| 527 | // set too high. |
| 528 | if (isset($lockedFilters[$filterId])) { |
| 533 | $lockedFilters[$filterId] = true; |
| 534 | |
| 535 | // Instantiate the filter. |
| 536 | $filter = $this->_newDataObject($row['class_name'], (int)$row['filter_group_id']); |
| 537 | |
| 538 | // Configure the filter instance |
| 539 | $filter->setId((int)$row['filter_id']); |
| 540 | $filter->setDisplayName($row['display_name']); |
| 541 | $filter->setIsTemplate((bool)$row['is_template']); |
| 542 | $filter->setParentFilterId($row['parent_filter_id']); |
| 543 | $filter->setSequence((int)$row['seq']); |
| 544 | $this->getDataObjectSettings('filter_settings', 'filter_id', $row['filter_id'], $filter); |
| 545 | |
| 546 | // Recursively retrieve sub-filters of this filter. |
| 547 | $this->_populateSubFilters($filter); |
| 548 | |
| 549 | // Release the lock on the filter id. |
| 550 | unset($lockedFilters[$filterId]); |
| 551 | |
| 552 | return $filter; |
| 553 | } |
| 587 | public function _insertSubFilters(Filter $parentFilter): void |
| 588 | { |
| 589 | if (!$parentFilter instanceof \PKP\filter\CompositeFilter) { |
| 592 | return; |
| 587 | public function _insertSubFilters(Filter $parentFilter): void |
| 588 | { |
| 589 | if (!$parentFilter instanceof \PKP\filter\CompositeFilter) { |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 597 | $subFilter->setParentFilterId($parentFilter->getId()); |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 597 | $subFilter->setParentFilterId($parentFilter->getId()); |
| 598 | $subfilterId = $this->insertObject($subFilter); |
| 599 | } |
| 600 | } |
| 587 | public function _insertSubFilters(Filter $parentFilter): void |
| 588 | { |
| 589 | if (!$parentFilter instanceof \PKP\filter\CompositeFilter) { |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 597 | $subFilter->setParentFilterId($parentFilter->getId()); |
| 598 | $subfilterId = $this->insertObject($subFilter); |
| 599 | } |
| 600 | } |
| 587 | public function _insertSubFilters(Filter $parentFilter): void |
| 588 | { |
| 589 | if (!$parentFilter instanceof \PKP\filter\CompositeFilter) { |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 596 | foreach ($parentFilter->getFilters() as $subFilter) { |
| 597 | $subFilter->setParentFilterId($parentFilter->getId()); |
| 598 | $subfilterId = $this->insertObject($subFilter); |
| 599 | } |
| 600 | } |
| 492 | public function _newDataObject(string $filterClassName, int $filterGroupId): PersistableFilter |
| 493 | { |
| 494 | // Instantiate the filter group. |
| 495 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 496 | $filterGroup = $filterGroupDao->getObjectById($filterGroupId); |
| 497 | if (!$filterGroup) { |
| 498 | throw new Exception('Could not get filter group by ID!'); |
| 492 | public function _newDataObject(string $filterClassName, int $filterGroupId): PersistableFilter |
| 493 | { |
| 494 | // Instantiate the filter group. |
| 495 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 496 | $filterGroup = $filterGroupDao->getObjectById($filterGroupId); |
| 497 | if (!$filterGroup) { |
| 502 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 502 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 503 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 504 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 508 | if (!is_object($filter)) { |
| 509 | throw new Exception('Error while instantiating class "' . $filterClassName . '" as filter!'); |
| 492 | public function _newDataObject(string $filterClassName, int $filterGroupId): PersistableFilter |
| 493 | { |
| 494 | // Instantiate the filter group. |
| 495 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 496 | $filterGroup = $filterGroupDao->getObjectById($filterGroupId); |
| 497 | if (!$filterGroup) { |
| 502 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 502 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 503 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 504 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 508 | if (!is_object($filter)) { |
| 512 | return $filter; |
| 513 | } |
| 492 | public function _newDataObject(string $filterClassName, int $filterGroupId): PersistableFilter |
| 493 | { |
| 494 | // Instantiate the filter group. |
| 495 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 496 | $filterGroup = $filterGroupDao->getObjectById($filterGroupId); |
| 497 | if (!$filterGroup) { |
| 502 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 505 | } elseif (class_exists($filterClassName)) { |
| 506 | $filter = new $filterClassName($filterGroup); |
| 507 | } |
| 508 | if (!is_object($filter)) { |
| 508 | if (!is_object($filter)) { |
| 509 | throw new Exception('Error while instantiating class "' . $filterClassName . '" as filter!'); |
| 492 | public function _newDataObject(string $filterClassName, int $filterGroupId): PersistableFilter |
| 493 | { |
| 494 | // Instantiate the filter group. |
| 495 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 496 | $filterGroup = $filterGroupDao->getObjectById($filterGroupId); |
| 497 | if (!$filterGroup) { |
| 502 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 505 | } elseif (class_exists($filterClassName)) { |
| 506 | $filter = new $filterClassName($filterGroup); |
| 507 | } |
| 508 | if (!is_object($filter)) { |
| 508 | if (!is_object($filter)) { |
| 512 | return $filter; |
| 513 | } |
| 492 | public function _newDataObject(string $filterClassName, int $filterGroupId): PersistableFilter |
| 493 | { |
| 494 | // Instantiate the filter group. |
| 495 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 496 | $filterGroup = $filterGroupDao->getObjectById($filterGroupId); |
| 497 | if (!$filterGroup) { |
| 502 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 505 | } elseif (class_exists($filterClassName)) { |
| 508 | if (!is_object($filter)) { |
| 509 | throw new Exception('Error while instantiating class "' . $filterClassName . '" as filter!'); |
| 492 | public function _newDataObject(string $filterClassName, int $filterGroupId): PersistableFilter |
| 493 | { |
| 494 | // Instantiate the filter group. |
| 495 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 496 | $filterGroup = $filterGroupDao->getObjectById($filterGroupId); |
| 497 | if (!$filterGroup) { |
| 502 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 505 | } elseif (class_exists($filterClassName)) { |
| 508 | if (!is_object($filter)) { |
| 512 | return $filter; |
| 513 | } |
| 559 | public function _populateSubFilters(PersistableFilter $parentFilter): void |
| 560 | { |
| 561 | if (!$parentFilter instanceof \PKP\filter\CompositeFilter) { |
| 564 | return; |
| 559 | public function _populateSubFilters(PersistableFilter $parentFilter): void |
| 560 | { |
| 561 | if (!$parentFilter instanceof \PKP\filter\CompositeFilter) { |
| 568 | $result = $this->retrieve( |
| 569 | 'SELECT * FROM filters WHERE parent_filter_id = ? ORDER BY seq', |
| 570 | [$parentFilter->getId()] |
| 571 | ); |
| 572 | /** @var DAOResultFactory<PersistableFilter> */ |
| 573 | $daoResultFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 574 | |
| 575 | // Add sub-filters. |
| 576 | while ($subFilter = $daoResultFactory->next()) { |
| 576 | while ($subFilter = $daoResultFactory->next()) { |
| 581 | } |
| 559 | public function _populateSubFilters(PersistableFilter $parentFilter): void |
| 560 | { |
| 561 | if (!$parentFilter instanceof \PKP\filter\CompositeFilter) { |
| 568 | $result = $this->retrieve( |
| 569 | 'SELECT * FROM filters WHERE parent_filter_id = ? ORDER BY seq', |
| 570 | [$parentFilter->getId()] |
| 571 | ); |
| 572 | /** @var DAOResultFactory<PersistableFilter> */ |
| 573 | $daoResultFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 574 | |
| 575 | // Add sub-filters. |
| 576 | while ($subFilter = $daoResultFactory->next()) { |
| 576 | while ($subFilter = $daoResultFactory->next()) { |
| 576 | while ($subFilter = $daoResultFactory->next()) { |
| 577 | // Add the sub-filter to the filter list |
| 578 | // of its parent filter. |
| 579 | $parentFilter->addFilter($subFilter); |
| 576 | while ($subFilter = $daoResultFactory->next()) { |
| 581 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 86 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 100 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 109 | throw new Exception('Filter is not expected type CompositeFilter!'); |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 112 | throw new Exception('Subfilters must be an array!'); |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 91 | // DEPRECATED as of 3.4.0: Use old class.name.style and import() function (pre-PSR classloading) pkp/pkp-lib#8186 |
| 92 | $filter = instantiate($filterClassName, 'PersistableFilter', null, 'execute', $filterGroup); /** @var PersistableFilter $filter */ |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 100 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 109 | throw new Exception('Filter is not expected type CompositeFilter!'); |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 112 | throw new Exception('Subfilters must be an array!'); |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 108 | if (!$filter instanceof \PKP\filter\CompositeFilter) { |
| 111 | if (!is_array($subFilters)) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 114 | foreach ($subFilters as $subFilter) { |
| 115 | $filter->addFilter($subFilter); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | // Parameterize the filter. |
| 120 | assert(is_array($settings)); |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 129 | return false; |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 127 | $filterId = $this->insertObject($filter, $contextId); |
| 128 | if (!$filterId) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 94 | $filter = new $filterClassName($filterGroup); |
| 99 | if (!$filter) { |
| 104 | $filter->setIsTemplate((bool)$asTemplate); |
| 105 | |
| 106 | // Add sub-filters (if any). |
| 107 | if (!empty($subFilters)) { |
| 120 | assert(is_array($settings)); |
| 121 | foreach ($settings as $key => $value) { |
| 121 | foreach ($settings as $key => $value) { |
| 122 | $filter->setData($key, $value); |
| 123 | } |
| 124 | |
| 125 | // Persist the filter. |
| 126 | if ($persist) { |
| 133 | return $filter; |
| 134 | } |
| 73 | public function configureObject( |
| 74 | string $filterClassName, |
| 75 | string $filterGroupSymbolic, |
| 76 | array $settings = [], |
| 77 | bool $asTemplate = false, |
| 78 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 79 | array $subFilters = [], |
| 80 | bool $persist = true |
| 81 | ): bool|PersistableFilter { |
| 82 | // Retrieve the filter group from the database. |
| 83 | $filterGroupDao = DAORegistry::getDAO('FilterGroupDAO'); /** @var FilterGroupDAO $filterGroupDao */ |
| 84 | $filterGroup = $filterGroupDao->getObjectBySymbolic($filterGroupSymbolic); |
| 85 | if (!$filterGroup instanceof \PKP\filter\FilterGroup) { |
| 90 | if (preg_match('/^[a-zA-Z0-9_.]+$/', $filterClassName)) { |
| 93 | } elseif (class_exists($filterClassName)) { |
| 97 | return false; |
| 419 | public function deleteObject(PersistableFilter $filter): bool |
| 420 | { |
| 421 | return $this->deleteObjectById($filter->getId()); |
| 422 | } |
| 427 | public function deleteObjectById(int $filterId): bool |
| 428 | { |
| 429 | $this->update('DELETE FROM filters WHERE filter_id = ?', [$filterId]); |
| 430 | $this->update('DELETE FROM filter_settings WHERE filter_id = ?', [$filterId]); |
| 431 | $this->_deleteSubFiltersByParentFilterId($filterId); |
| 432 | return true; |
| 433 | } |
| 471 | return $this->additionalFieldNames; |
| 472 | } |
| 479 | return $this->localeFieldNames; |
| 480 | } |
| 178 | public function getObject(PersistableFilter $filter): PersistableFilter |
| 179 | { |
| 180 | return $this->getObjectById($filter->getId()); |
| 181 | } |
| 186 | public function getObjectById(int $filterId, bool $allowSubfilter = false): ?PersistableFilter |
| 187 | { |
| 188 | $result = $this->retrieve( |
| 189 | 'SELECT * FROM filters |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 191 | filter_id = ?', |
| 192 | [(int) $filterId] |
| 193 | ); |
| 194 | $row = $result->current(); |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 196 | } |
| 186 | public function getObjectById(int $filterId, bool $allowSubfilter = false): ?PersistableFilter |
| 187 | { |
| 188 | $result = $this->retrieve( |
| 189 | 'SELECT * FROM filters |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 191 | filter_id = ?', |
| 192 | [(int) $filterId] |
| 193 | ); |
| 194 | $row = $result->current(); |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 196 | } |
| 186 | public function getObjectById(int $filterId, bool $allowSubfilter = false): ?PersistableFilter |
| 187 | { |
| 188 | $result = $this->retrieve( |
| 189 | 'SELECT * FROM filters |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 191 | filter_id = ?', |
| 192 | [(int) $filterId] |
| 193 | ); |
| 194 | $row = $result->current(); |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 196 | } |
| 186 | public function getObjectById(int $filterId, bool $allowSubfilter = false): ?PersistableFilter |
| 187 | { |
| 188 | $result = $this->retrieve( |
| 189 | 'SELECT * FROM filters |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 190 | WHERE ' . ($allowSubfilter ? '' : 'parent_filter_id IS NULL AND ') . ' |
| 191 | filter_id = ?', |
| 192 | [(int) $filterId] |
| 193 | ); |
| 194 | $row = $result->current(); |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 195 | return $row ? $this->_fromRow((array) $row) : null; |
| 196 | } |
| 207 | public function getObjectsByClass( |
| 208 | string $className, |
| 209 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 210 | bool $getTemplates = false, |
| 211 | bool $allowSubfilters = false |
| 212 | ): DAOResultFactory { |
| 213 | $result = $this->retrieve( |
| 214 | 'SELECT * FROM filters |
| 215 | WHERE COALESCE(context_id, 0) = ? AND |
| 216 | LOWER(class_name) = LOWER(?) AND |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 219 | [(int) $contextId, $className] |
| 220 | ); |
| 221 | |
| 222 | return new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 223 | } |
| 207 | public function getObjectsByClass( |
| 208 | string $className, |
| 209 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 210 | bool $getTemplates = false, |
| 211 | bool $allowSubfilters = false |
| 212 | ): DAOResultFactory { |
| 213 | $result = $this->retrieve( |
| 214 | 'SELECT * FROM filters |
| 215 | WHERE COALESCE(context_id, 0) = ? AND |
| 216 | LOWER(class_name) = LOWER(?) AND |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 219 | [(int) $contextId, $className] |
| 220 | ); |
| 221 | |
| 222 | return new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 223 | } |
| 207 | public function getObjectsByClass( |
| 208 | string $className, |
| 209 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 210 | bool $getTemplates = false, |
| 211 | bool $allowSubfilters = false |
| 212 | ): DAOResultFactory { |
| 213 | $result = $this->retrieve( |
| 214 | 'SELECT * FROM filters |
| 215 | WHERE COALESCE(context_id, 0) = ? AND |
| 216 | LOWER(class_name) = LOWER(?) AND |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 219 | [(int) $contextId, $className] |
| 220 | ); |
| 221 | |
| 222 | return new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 223 | } |
| 207 | public function getObjectsByClass( |
| 208 | string $className, |
| 209 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 210 | bool $getTemplates = false, |
| 211 | bool $allowSubfilters = false |
| 212 | ): DAOResultFactory { |
| 213 | $result = $this->retrieve( |
| 214 | 'SELECT * FROM filters |
| 215 | WHERE COALESCE(context_id, 0) = ? AND |
| 216 | LOWER(class_name) = LOWER(?) AND |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 217 | ' . ($allowSubfilters ? '' : ' parent_filter_id IS NULL AND ') . ' |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 218 | ' . ($getTemplates ? ' is_template = 1' : ' is_template = 0'), |
| 219 | [(int) $contextId, $className] |
| 220 | ); |
| 221 | |
| 222 | return new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 223 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 342 | public function getObjectsByGroup( |
| 343 | string $groupSymbolic, |
| 344 | ?int $contextId = Application::SITE_CONTEXT_ID_ALL, |
| 345 | bool $getTemplates = false, |
| 346 | bool $checkRuntimeEnvironment = true |
| 347 | ): array { |
| 348 | // 1) Get all available transformations in the group. |
| 349 | $result = $this->retrieve( |
| 350 | 'SELECT f.* FROM filters f' . |
| 351 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 352 | ' WHERE LOWER(fg.symbolic) = LOWER(?) AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 353 | ' ' . ($contextId !== Application::SITE_CONTEXT_ID_ALL ? 'AND COALESCE(f.context_id, 0) IN (0, ' . (int)$contextId . ')' : '') . |
| 354 | ' AND f.parent_filter_id IS NULL', |
| 355 | [$groupSymbolic] |
| 356 | ); |
| 357 | |
| 358 | |
| 359 | // 2) Instantiate and return all transformations in the |
| 360 | // result set that comply with the current runtime |
| 361 | // environment. |
| 362 | $matchingFilters = []; |
| 363 | foreach ($result as $row) { |
| 363 | foreach ($result as $row) { |
| 364 | $filterInstance = $this->_fromRow((array) $row); |
| 365 | if (!$checkRuntimeEnvironment || $filterInstance->isCompatibleWithRuntimeEnvironment()) { |
| 366 | $matchingFilters[$filterInstance->getId()] = $filterInstance; |
| 367 | } |
| 368 | } |
| 369 | |
| 370 | return $matchingFilters; |
| 371 | } |
| 235 | public function getObjectsByGroupAndClass( |
| 236 | string $groupSymbolic, |
| 237 | string $className, |
| 238 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 239 | bool $getTemplates = false, |
| 240 | bool $allowSubfilters = false |
| 241 | ): DAOResultFactory { |
| 242 | $result = $this->retrieve( |
| 243 | 'SELECT f.* FROM filters f' . |
| 244 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 245 | ' WHERE fg.symbolic = ? AND COALESCE(f.context_id, 0) = ? AND LOWER(f.class_name) = LOWER(?)' . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 248 | [$groupSymbolic, (int) $contextId, $className] |
| 249 | ); |
| 250 | |
| 251 | return new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 252 | } |
| 235 | public function getObjectsByGroupAndClass( |
| 236 | string $groupSymbolic, |
| 237 | string $className, |
| 238 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 239 | bool $getTemplates = false, |
| 240 | bool $allowSubfilters = false |
| 241 | ): DAOResultFactory { |
| 242 | $result = $this->retrieve( |
| 243 | 'SELECT f.* FROM filters f' . |
| 244 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 245 | ' WHERE fg.symbolic = ? AND COALESCE(f.context_id, 0) = ? AND LOWER(f.class_name) = LOWER(?)' . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 248 | [$groupSymbolic, (int) $contextId, $className] |
| 249 | ); |
| 250 | |
| 251 | return new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 252 | } |
| 235 | public function getObjectsByGroupAndClass( |
| 236 | string $groupSymbolic, |
| 237 | string $className, |
| 238 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 239 | bool $getTemplates = false, |
| 240 | bool $allowSubfilters = false |
| 241 | ): DAOResultFactory { |
| 242 | $result = $this->retrieve( |
| 243 | 'SELECT f.* FROM filters f' . |
| 244 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 245 | ' WHERE fg.symbolic = ? AND COALESCE(f.context_id, 0) = ? AND LOWER(f.class_name) = LOWER(?)' . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 248 | [$groupSymbolic, (int) $contextId, $className] |
| 249 | ); |
| 250 | |
| 251 | return new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 252 | } |
| 235 | public function getObjectsByGroupAndClass( |
| 236 | string $groupSymbolic, |
| 237 | string $className, |
| 238 | ?int $contextId = Application::SITE_CONTEXT_ID, |
| 239 | bool $getTemplates = false, |
| 240 | bool $allowSubfilters = false |
| 241 | ): DAOResultFactory { |
| 242 | $result = $this->retrieve( |
| 243 | 'SELECT f.* FROM filters f' . |
| 244 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 245 | ' WHERE fg.symbolic = ? AND COALESCE(f.context_id, 0) = ? AND LOWER(f.class_name) = LOWER(?)' . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 246 | ' ' . ($allowSubfilters ? '' : 'AND f.parent_filter_id IS NULL') . |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 247 | ' AND ' . ($getTemplates ? 'f.is_template = 1' : 'f.is_template = 0'), |
| 248 | [$groupSymbolic, (int) $contextId, $className] |
| 249 | ); |
| 250 | |
| 251 | return new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 252 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 301 | return $filterCache[$filterCacheKey]; |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 283 | $result = $this->retrieve( |
| 284 | 'SELECT f.*' . |
| 285 | ' FROM filters f' . |
| 286 | ' INNER JOIN filter_groups fg ON f.filter_group_id = fg.filter_group_id' . |
| 287 | ' WHERE LOWER(fg.input_type) LIKE LOWER(?)' . |
| 288 | ' AND LOWER(fg.output_type) LIKE LOWER(?)' . |
| 289 | ' AND f.parent_filter_id IS NULL AND f.is_template = 0', |
| 290 | [$inputTypeDescription, $outputTypeDescription] |
| 291 | ); |
| 292 | |
| 293 | // Instantiate all filters. |
| 294 | /** @var DAOResultFactory<PersistableFilter> */ |
| 295 | $filterFactory = new DAOResultFactory($result, $this, '_fromRow', ['filter_id']); |
| 296 | $filterCache[$filterCacheKey] = $filterFactory->toAssociativeArray(); |
| 297 | } |
| 298 | |
| 299 | // Return all filter candidates if no data is given to check against. |
| 300 | if (is_null($data)) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 301 | return $filterCache[$filterCacheKey]; |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 316 | if ($filterDataType->checkType($data)) { |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 307 | $objectFilterCache[$objectFilterCacheKey] = []; |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 308 | foreach ($filterCache[$filterCacheKey] as $filterCandidateId => $filterCandidate) { /** @var PersistableFilter $filterCandidate */ |
| 309 | // Check whether the given object can be transformed |
| 310 | // with this filter. |
| 311 | if ($dataIsInput) { |
| 312 | $filterDataType = $filterCandidate->getInputType(); |
| 313 | } else { |
| 314 | $filterDataType = $filterCandidate->getOutputType(); |
| 315 | } |
| 316 | if ($filterDataType->checkType($data)) { |
| 317 | $objectFilterCache[$objectFilterCacheKey][$filterCandidateId] = $filterCandidate; |
| 318 | } |
| 319 | unset($filterCandidate); |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 267 | public function getObjectsByTypeDescription( |
| 268 | string $inputTypeDescription, |
| 269 | string $outputTypeDescription, |
| 270 | $data = null, |
| 271 | bool $dataIsInput = true |
| 272 | ): array { |
| 273 | static $filterCache = []; |
| 274 | static $objectFilterCache = []; |
| 275 | |
| 276 | // We do not yet support array data types. Implement when required. |
| 277 | assert(!is_array($data)); |
| 278 | |
| 279 | // Build the adapter cache. |
| 280 | $filterCacheKey = md5($inputTypeDescription . '=>' . $outputTypeDescription); |
| 281 | if (!isset($filterCache[$filterCacheKey])) { |
| 300 | if (is_null($data)) { |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 305 | $objectFilterCacheKey = md5($filterCacheKey . (is_object($data) ? get_class($data) : "'{$data}'") . ($dataIsInput ? 'in' : 'out')); |
| 306 | if (!isset($objectFilterCache[$objectFilterCacheKey])) { |
| 323 | return $objectFilterCache[$objectFilterCacheKey]; |
| 324 | } |
| 143 | public function insertObject(PersistableFilter $filter, ?int $contextId = Application::SITE_CONTEXT_ID): int |
| 144 | { |
| 145 | $filterGroup = $filter->getFilterGroup(); |
| 146 | assert($filterGroup->getSymbolic() != FILTER_GROUP_TEMPORARY_ONLY); |
| 147 | |
| 148 | $this->update( |
| 149 | sprintf('INSERT INTO filters |
| 150 | (filter_group_id, context_id, display_name, class_name, is_template, parent_filter_id, seq) |
| 151 | VALUES (?, ?, ?, ?, ?, ?, ?)'), |
| 152 | [ |
| 153 | $filterGroup->getId(), |
| 154 | $contextId, |
| 155 | $filter->getDisplayName(), |
| 156 | $filter->getClassName(), |
| 157 | $filter->getIsTemplate() ? 1 : 0, |
| 157 | $filter->getIsTemplate() ? 1 : 0, |
| 157 | $filter->getIsTemplate() ? 1 : 0, |
| 158 | $filter->getParentFilterId(), |
| 159 | (int) $filter->getSequence() |
| 160 | ] |
| 161 | ); |
| 162 | $filter->setId((int)$this->getInsertId()); |
| 163 | $this->updateDataObjectSettings( |
| 164 | 'filter_settings', |
| 165 | $filter, |
| 166 | ['filter_id' => $filter->getId()] |
| 167 | ); |
| 168 | |
| 169 | // Recursively insert sub-filters. |
| 170 | $this->_insertSubFilters($filter); |
| 171 | |
| 172 | return $filter->getId(); |
| 173 | } |
| 143 | public function insertObject(PersistableFilter $filter, ?int $contextId = Application::SITE_CONTEXT_ID): int |
| 144 | { |
| 145 | $filterGroup = $filter->getFilterGroup(); |
| 146 | assert($filterGroup->getSymbolic() != FILTER_GROUP_TEMPORARY_ONLY); |
| 147 | |
| 148 | $this->update( |
| 149 | sprintf('INSERT INTO filters |
| 150 | (filter_group_id, context_id, display_name, class_name, is_template, parent_filter_id, seq) |
| 151 | VALUES (?, ?, ?, ?, ?, ?, ?)'), |
| 152 | [ |
| 153 | $filterGroup->getId(), |
| 154 | $contextId, |
| 155 | $filter->getDisplayName(), |
| 156 | $filter->getClassName(), |
| 157 | $filter->getIsTemplate() ? 1 : 0, |
| 157 | $filter->getIsTemplate() ? 1 : 0, |
| 157 | $filter->getIsTemplate() ? 1 : 0, |
| 158 | $filter->getParentFilterId(), |
| 159 | (int) $filter->getSequence() |
| 160 | ] |
| 161 | ); |
| 162 | $filter->setId((int)$this->getInsertId()); |
| 163 | $this->updateDataObjectSettings( |
| 164 | 'filter_settings', |
| 165 | $filter, |
| 166 | ['filter_id' => $filter->getId()] |
| 167 | ); |
| 168 | |
| 169 | // Recursively insert sub-filters. |
| 170 | $this->_insertSubFilters($filter); |
| 171 | |
| 172 | return $filter->getId(); |
| 173 | } |
| 442 | public function updateDataObjectSettings(string $tableName, DataObject $dataObject, array $idArray): void |
| 443 | { |
| 444 | // Make sure that the update function finds the filter settings |
| 445 | $this->additionalFieldNames = $dataObject->getSettingNames(); |
| 446 | $this->localeFieldNames = $dataObject->getLocalizedSettingNames(); |
| 447 | |
| 448 | // Add runtime settings |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 450 | if ($dataObject->hasData($runtimeSetting)) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 450 | if ($dataObject->hasData($runtimeSetting)) { |
| 451 | $this->additionalFieldNames[] = $runtimeSetting; |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 450 | if ($dataObject->hasData($runtimeSetting)) { |
| 451 | $this->additionalFieldNames[] = $runtimeSetting; |
| 452 | } |
| 453 | } |
| 454 | |
| 455 | // Update the filter settings |
| 456 | parent::updateDataObjectSettings($tableName, $dataObject, $idArray); |
| 457 | |
| 458 | // Reset the internal fields |
| 459 | unset($this->additionalFieldNames, $this->localeFieldNames); |
| 460 | } |
| 442 | public function updateDataObjectSettings(string $tableName, DataObject $dataObject, array $idArray): void |
| 443 | { |
| 444 | // Make sure that the update function finds the filter settings |
| 445 | $this->additionalFieldNames = $dataObject->getSettingNames(); |
| 446 | $this->localeFieldNames = $dataObject->getLocalizedSettingNames(); |
| 447 | |
| 448 | // Add runtime settings |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 450 | if ($dataObject->hasData($runtimeSetting)) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 450 | if ($dataObject->hasData($runtimeSetting)) { |
| 451 | $this->additionalFieldNames[] = $runtimeSetting; |
| 452 | } |
| 453 | } |
| 454 | |
| 455 | // Update the filter settings |
| 456 | parent::updateDataObjectSettings($tableName, $dataObject, $idArray); |
| 457 | |
| 458 | // Reset the internal fields |
| 459 | unset($this->additionalFieldNames, $this->localeFieldNames); |
| 460 | } |
| 442 | public function updateDataObjectSettings(string $tableName, DataObject $dataObject, array $idArray): void |
| 443 | { |
| 444 | // Make sure that the update function finds the filter settings |
| 445 | $this->additionalFieldNames = $dataObject->getSettingNames(); |
| 446 | $this->localeFieldNames = $dataObject->getLocalizedSettingNames(); |
| 447 | |
| 448 | // Add runtime settings |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 450 | if ($dataObject->hasData($runtimeSetting)) { |
| 451 | $this->additionalFieldNames[] = $runtimeSetting; |
| 452 | } |
| 453 | } |
| 454 | |
| 455 | // Update the filter settings |
| 456 | parent::updateDataObjectSettings($tableName, $dataObject, $idArray); |
| 457 | |
| 458 | // Reset the internal fields |
| 459 | unset($this->additionalFieldNames, $this->localeFieldNames); |
| 460 | } |
| 442 | public function updateDataObjectSettings(string $tableName, DataObject $dataObject, array $idArray): void |
| 443 | { |
| 444 | // Make sure that the update function finds the filter settings |
| 445 | $this->additionalFieldNames = $dataObject->getSettingNames(); |
| 446 | $this->localeFieldNames = $dataObject->getLocalizedSettingNames(); |
| 447 | |
| 448 | // Add runtime settings |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 449 | foreach ($dataObject->supportedRuntimeEnvironmentSettings() as $runtimeSetting => $defaultValue) { |
| 450 | if ($dataObject->hasData($runtimeSetting)) { |
| 451 | $this->additionalFieldNames[] = $runtimeSetting; |
| 452 | } |
| 453 | } |
| 454 | |
| 455 | // Update the filter settings |
| 456 | parent::updateDataObjectSettings($tableName, $dataObject, $idArray); |
| 457 | |
| 458 | // Reset the internal fields |
| 459 | unset($this->additionalFieldNames, $this->localeFieldNames); |
| 460 | } |
| 376 | public function updateObject(PersistableFilter $filter): void |
| 377 | { |
| 378 | $filterGroup = $filter->getFilterGroup(); |
| 379 | assert($filterGroup->getSymbolic() != FILTER_GROUP_TEMPORARY_ONLY); |
| 380 | |
| 381 | $this->update( |
| 382 | 'UPDATE filters |
| 383 | SET filter_group_id = ?, |
| 384 | display_name = ?, |
| 385 | class_name = ?, |
| 386 | is_template = ?, |
| 387 | parent_filter_id = ?, |
| 388 | seq = ? |
| 389 | WHERE filter_id = ?', |
| 390 | [ |
| 391 | (int) $filterGroup->getId(), |
| 392 | $filter->getDisplayName(), |
| 393 | $filter->getClassName(), |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 395 | $filter->getParentFilterId(), |
| 396 | (int) $filter->getSequence(), |
| 397 | (int) $filter->getId() |
| 398 | ] |
| 399 | ); |
| 400 | $this->updateDataObjectSettings( |
| 401 | 'filter_settings', |
| 402 | $filter, |
| 403 | ['filter_id' => $filter->getId()] |
| 404 | ); |
| 405 | |
| 406 | // Do we update a composite filter? |
| 407 | if ($filter instanceof \PKP\filter\CompositeFilter) { |
| 409 | $this->_deleteSubFiltersByParentFilterId($filter->getId()); |
| 410 | |
| 411 | // Re-insert sub-filters |
| 412 | $this->_insertSubFilters($filter); |
| 413 | } |
| 414 | } |
| 414 | } |
| 376 | public function updateObject(PersistableFilter $filter): void |
| 377 | { |
| 378 | $filterGroup = $filter->getFilterGroup(); |
| 379 | assert($filterGroup->getSymbolic() != FILTER_GROUP_TEMPORARY_ONLY); |
| 380 | |
| 381 | $this->update( |
| 382 | 'UPDATE filters |
| 383 | SET filter_group_id = ?, |
| 384 | display_name = ?, |
| 385 | class_name = ?, |
| 386 | is_template = ?, |
| 387 | parent_filter_id = ?, |
| 388 | seq = ? |
| 389 | WHERE filter_id = ?', |
| 390 | [ |
| 391 | (int) $filterGroup->getId(), |
| 392 | $filter->getDisplayName(), |
| 393 | $filter->getClassName(), |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 395 | $filter->getParentFilterId(), |
| 396 | (int) $filter->getSequence(), |
| 397 | (int) $filter->getId() |
| 398 | ] |
| 399 | ); |
| 400 | $this->updateDataObjectSettings( |
| 401 | 'filter_settings', |
| 402 | $filter, |
| 403 | ['filter_id' => $filter->getId()] |
| 404 | ); |
| 405 | |
| 406 | // Do we update a composite filter? |
| 407 | if ($filter instanceof \PKP\filter\CompositeFilter) { |
| 414 | } |
| 376 | public function updateObject(PersistableFilter $filter): void |
| 377 | { |
| 378 | $filterGroup = $filter->getFilterGroup(); |
| 379 | assert($filterGroup->getSymbolic() != FILTER_GROUP_TEMPORARY_ONLY); |
| 380 | |
| 381 | $this->update( |
| 382 | 'UPDATE filters |
| 383 | SET filter_group_id = ?, |
| 384 | display_name = ?, |
| 385 | class_name = ?, |
| 386 | is_template = ?, |
| 387 | parent_filter_id = ?, |
| 388 | seq = ? |
| 389 | WHERE filter_id = ?', |
| 390 | [ |
| 391 | (int) $filterGroup->getId(), |
| 392 | $filter->getDisplayName(), |
| 393 | $filter->getClassName(), |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 395 | $filter->getParentFilterId(), |
| 396 | (int) $filter->getSequence(), |
| 397 | (int) $filter->getId() |
| 398 | ] |
| 399 | ); |
| 400 | $this->updateDataObjectSettings( |
| 401 | 'filter_settings', |
| 402 | $filter, |
| 403 | ['filter_id' => $filter->getId()] |
| 404 | ); |
| 405 | |
| 406 | // Do we update a composite filter? |
| 407 | if ($filter instanceof \PKP\filter\CompositeFilter) { |
| 409 | $this->_deleteSubFiltersByParentFilterId($filter->getId()); |
| 410 | |
| 411 | // Re-insert sub-filters |
| 412 | $this->_insertSubFilters($filter); |
| 413 | } |
| 414 | } |
| 414 | } |
| 376 | public function updateObject(PersistableFilter $filter): void |
| 377 | { |
| 378 | $filterGroup = $filter->getFilterGroup(); |
| 379 | assert($filterGroup->getSymbolic() != FILTER_GROUP_TEMPORARY_ONLY); |
| 380 | |
| 381 | $this->update( |
| 382 | 'UPDATE filters |
| 383 | SET filter_group_id = ?, |
| 384 | display_name = ?, |
| 385 | class_name = ?, |
| 386 | is_template = ?, |
| 387 | parent_filter_id = ?, |
| 388 | seq = ? |
| 389 | WHERE filter_id = ?', |
| 390 | [ |
| 391 | (int) $filterGroup->getId(), |
| 392 | $filter->getDisplayName(), |
| 393 | $filter->getClassName(), |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 394 | $filter->getIsTemplate() ? 1 : 0, |
| 395 | $filter->getParentFilterId(), |
| 396 | (int) $filter->getSequence(), |
| 397 | (int) $filter->getId() |
| 398 | ] |
| 399 | ); |
| 400 | $this->updateDataObjectSettings( |
| 401 | 'filter_settings', |
| 402 | $filter, |
| 403 | ['filter_id' => $filter->getId()] |
| 404 | ); |
| 405 | |
| 406 | // Do we update a composite filter? |
| 407 | if ($filter instanceof \PKP\filter\CompositeFilter) { |
| 414 | } |